home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / RCS / ccdev.h,v < prev    next >
Text File  |  1989-04-12  |  5KB  |  232 lines

  1. head     1.3;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.3
  10. date     89.04.12.20.35.04;  author mendel;  state Exp;
  11. branches ;
  12. next     1.2;
  13.  
  14. 1.2
  15. date     88.11.17.09.13.30;  author mendel;  state Exp;
  16. branches ;
  17. next     1.1;
  18.  
  19. 1.1
  20. date     88.10.17.10.50.03;  author mendel;  state Exp;
  21. branches ;
  22. next     ;
  23.  
  24.  
  25. desc
  26. @/dev/cc header file.
  27. @
  28.  
  29.  
  30. 1.3
  31. log
  32. @Added processed cache controller device.
  33. @
  34. text
  35. @/*
  36.  * ccdev.h --
  37.  *
  38.  *    Declarations of SPUR Cache Controller device interface.
  39.  *
  40.  * Copyright 1988 Regents of the University of California
  41.  * Permission to use, copy, modify, and distribute this
  42.  * software and its documentation for any purpose and without
  43.  * fee is hereby granted, provided that the above copyright
  44.  * notice appear in all copies.  The University of California
  45.  * makes no representations about the suitability of this
  46.  * software for any purpose.  It is provided "as is" without
  47.  * express or implied warranty.
  48.  *
  49.  * $Header: /sprite/src/lib/include/dev/RCS/ccdev.h,v 1.2 88/11/17 09:13:30 mendel Exp Locker: mendel $ SPRITE (Berkeley)
  50.  */
  51.  
  52. #ifndef _DEVCC_H
  53. #define _DEVCC_H
  54.  
  55. #include "spur.md/kernel/mach.h"    /* For MACH_MAX_NUM_PROCESSORS */
  56. #include "spur.md/kernel/timerTick.h"
  57.  
  58. /* constants */
  59. /*
  60.  * Cache Controller Mode register bits.
  61.  * (see SPUR-MSA page 24-25)
  62.  */
  63.  
  64. #define    MODE_PERF_COUNTER_MASK    0x07
  65. #define    MODE_GARTH        0x08
  66. #define    MODE_T0_ENABLE        0x10
  67. #define MODE_T1_ENABLE        0x20
  68. #define    MODE_T2_ENABLE        0x40
  69. #define    MODE_DAVID        0x80
  70.  
  71. /*
  72.  * Mode register performance counters mode bits.
  73.  *    (MODE_REG & MACH_MODE_PERF_COUNTER_MASK)
  74.  * (See SPUR-MSA page 25)
  75.  */
  76.  
  77. #define    MODE_PERF_COUNTER_OFF    0x00
  78. #define    MODE_PERF_COUNTER_SNOOP    0x01
  79. #define MODE_PERF_COUNTER_USER    0x05
  80. #define MODE_PERF_COUNTER_SYS    0x06
  81. #define    MODE_PERF_COUNTER_BOTH    0x07
  82.  
  83. #define    DEV_CC_MAX_OFFSET    sizeof(CCdev)    /* Size of CC. */
  84.  
  85. /*
  86.  * User changable mode register bits.
  87.  */
  88.  
  89. #define    DEV_CC_USER_MODE_BITS    ((unsigned char) \
  90.             ~(MODE_T0_ENABLE|MODE_T1_ENABLE|MODE_T2_ENABLE))
  91.  
  92. /*
  93.  * IoControl's for SPUR CC.
  94.  *
  95.  * IOC_CCDEV_SET_MODE - Set the mode register. Inbuffer should contain a
  96.  * single unsigned char specifing the new mode register values.  Note that
  97.  * only bits specified in DEV_CC_USER_MODE_BITS maybe changed by the user.
  98.  * Other bits will be left unmodified. 
  99.  * IOC_CCDEV_READ_T0 - Do a stable read of the 64bit counter T0. The outBuffer
  100.  * contains a devCounter structure.
  101.  */
  102.  
  103. #define    IOC_CCDEV        (2 << 16)
  104. #define    IOC_CCDEV_SET_MODE    (IOC_CCDEV | 0x1)      
  105. #define    IOC_CCDEV_READ_T0    (IOC_CCDEV | 0x2)      
  106.  
  107.  
  108. /* data structures */
  109.  
  110. /*
  111.  * CCdevCounters - Memory image of Cache Controller counter registers C0-C15.
  112.  */
  113.  
  114. typedef struct CCdevCounters {
  115.     unsigned int    value;        /* Value of counter. */
  116.     unsigned int    padding;    /* Padding (not used). */
  117. } CCdevCounters;
  118.  
  119. /*
  120.  * CCdevRTPM - Memory image of Cache Contoller RPTM/GSN register. 
  121.  */
  122. typedef struct CCdevRTPM {
  123.     unsigned int        :12;
  124.     unsigned int    addr    :20;    /* Address */
  125.     unsigned char    gsn;        /* GSN */
  126.     unsigned int        :24;    /* padding. */
  127. } CCdevRTPM;
  128.  
  129. /*
  130.  * CCdevREG38 - Memory image of Cache Contoller 38 bit registers
  131.  */
  132. typedef struct CCdevREG38 {
  133.     unsigned int    low;        /* Low 32 bits */
  134.     unsigned char    high    :6;    /* High 6 bits */
  135.     unsigned int        :26;    
  136. } CCdevREG38;
  137.  
  138. /*
  139.  * CCdev - Memory image of Cache Controller registers. 
  140.  */
  141.  
  142. typedef struct CCdev {
  143.     CCdevRTPM    rtpm[4];    /* RPTM{0,1,2,3} */
  144.     CCdevREG38    gva;        /* GVA */
  145.     CCdevREG38    pteva;        /* PTEVA */
  146.     CCdevREG38    rpteva;        /* RPTEVA */
  147.     CCdevREG38    g;        /* G */
  148.     unsigned int    t0_low;        /* T0<31:0> */
  149.     unsigned int        :32;    
  150.     unsigned int    t0_high;    /* T0<63:32> */
  151.     unsigned int        :32;    
  152.     unsigned int    t1;        /* T1 */
  153.     unsigned int        :32;    
  154.     unsigned int    t2;        /* T2 */
  155.     unsigned int        :32;    
  156.     unsigned int    istatus;    /* Istatus */
  157.     unsigned int        :32;    
  158.     unsigned int    imask;        /* Imask */
  159.     unsigned int        :32;    
  160.     unsigned int    festatus;    /* FEStatus */
  161.     unsigned int        :32;    
  162.     unsigned char    slotid;        /* SlotId */
  163.     unsigned char    mode;        /* Mode */
  164.     unsigned int        :16;
  165.     unsigned int        :32;    
  166.     CCdevCounters        c[16];    /* C0 thru C15 */
  167. } CCdev;
  168.  
  169. /*
  170.  * A structure containing the 64bit version of the c0 thru c15 counters.
  171.  */
  172. typedef struct CCdev64bitCounter {
  173.     unsigned int    low;    /* Low 32 bit of value. */
  174.     unsigned int    high;    /* High 32 bit of value. */
  175. } CCdev64bitCounter;
  176.  
  177. /*
  178.  * The memory image of the processed cache controler device.
  179.  */
  180. typedef struct PCCdev {
  181.     CCdev64bitCounter    t0;    /* The t0 64 bit free running counter */
  182.     CCdev64bitCounter    c[16];    /* Counter c0 thru c15. */
  183. } PCCdev[MACH_MAX_NUM_PROCESSORS];
  184.  
  185. /*
  186.  * Compute offsets of a register.
  187.  */
  188.  
  189. #define    CC_OFFSET_OF(field)    ((int)&(((CCdev *) 0)->field))
  190.  
  191. /*
  192.  * Smallest user writtable offset - nothing below the first counter.
  193.  */
  194.  
  195. #define    DEV_CC_MIN_USER_OFFSET     (CC_OFFSET_OF(c[0]))
  196.  
  197. #endif _DEVCC_H
  198.  
  199. @
  200.  
  201.  
  202. 1.2
  203. log
  204. @Fixed structure of slot id.
  205. @
  206. text
  207. @d15 1
  208. a15 1
  209.  * $Header: /sprite/src/lib/include.new/dev/RCS/ccdev.h,v 1.1 88/10/17 10:50:03 mendel Exp Locker: mendel $ SPRITE (Berkeley)
  210. d21 1
  211. d134 16
  212. @
  213.  
  214.  
  215. 1.1
  216. log
  217. @Initial revision
  218. @
  219. text
  220. @d15 1
  221. a15 1
  222.  * $Header: proto.h,v 1.2 88/03/11 08:39:40 ouster Exp $ SPRITE (Berkeley)
  223. d21 1
  224. a21 1
  225. #include "kernel/devCounter.h"
  226. d116 1
  227. d127 1
  228. a127 2
  229.     unsigned char    slotid    :3;    /* SlotId */
  230.     unsigned char        :5;    
  231. @
  232.